Today, computing is increasingly being delivered as a utility service over the Internet. Through the deployment of cloud computing and virtualization technology, compute, storage, and application services are available for on-demand consumption over the Internet. In this model of delivery, a user is not required to have knowledge of the physical locations and the configurations of the compute and storage resources in order to utilize the service.
End users of cloud computing often organize the resources available into “hybrid clouds” that comprise “private clouds” that include servers and storage systems at a private data center, and also “public clouds” that include servers and storage systems located at multi-tenant public data centers such as Amazon Web Services, Google Compute Engine, or Microsoft Azure. These clouds use virtualization technology such as those offered by VMWare ESX or KVM to group computing resources for easy management. End users may also create cloud groups based on workload requirements for various end-user groups.
The existing methodology to create these groups requires manual assignment, typically by a cloud service provider, of the necessary compute, storage, network, and Internet resources. In fact, to enable easy consumption of services and resources by the compute node, the complexity of deploying and configuring the network topology and the available compute, storage, and network resources is typically handled by the cloud service provider. The sheer number of network devices and tools make it very onerous and inefficient for systems administrators at the service provider to deploy cloud resources that can deliver a level of performance that is guaranteed via a contractual obligation.
The fundamental reason for this problem results from the fact that the basic monolithic building block needed to build the cloud is a “motherboard”. In its most basic implementation, this “motherboard” is typically comprised of a CPU, memory, and a network interface controller (NIC) connected together on a circuit board. Each “motherboard” on a network may be identified by a physical or virtual internet protocol (IP) address, or a physical media access control (MAC) address embedded in the NIC device. This “motherboard” may be implemented in a plurality of ways including but not limited to personal computer (PC) motherboards and blade server plug-in boards, multiples of which are required to build large servers as is common in the cloud. These “motherboards” are then used to deploy operating systems, which in turn allow the deployment of virtualization technology in the form of virtual machines (VMs) and virtual networks to create the end cloud product that supports guest operating systems, thereby enabling the consumption of computing resources as a service. In order to achieve this virtualization, the user that is creating the cloud resources typically needs to know the IP addresses of all of the computing, storage, and Internet resources needed to be connected together. Consequently, it is very problematic to create the cloud groups that provide the necessary resources to deliver the level of service required to handle the user workloads efficiently.